----- 调用C++函数 -----


https://doc.qt.io/qt-6.9/zh/qml-qtquick-layouts-layout.html

 C++ 
使用 Q_INVOKABLE 宏标记
/*--------myClass.h--------*/
public:
    //Q_INVOKABLE 宏标记
    Q_INVOKABLE QString fn();
        //即:在函数声明前加 Q_INVOKABLE
    
/*--------myClass.cpp--------*/
#include "myclass.h"
    
QString MyClass::fn()
{
    qDebug()<<"hello";
    return "hello";
}
    
/*--------main.cpp--------*/
#include "myclass.h"
#include <QQmlContext>
    
int main(int argc, char *argv[])
{
    //创建类实例
    MyClass myObject;
        //语法:类名+ 实例名;
    
    //通过实例名访问,QML 中 通过 name 访问
    engine.rootContext()->setContextProperty("name", &myObject);
        //语法:实例别名+ 实例名;(实例别名可以与实例名一样)
}


 QML 
使用 Q_INVOKABLE 宏标记
import QtQuick
import QtQuick.Controls
    
Button {
    //通过👉实例别名.函数名👈访问
    onClicked: console.log( name.fn() )
}